﻿
Ext.define('ListadoArticulos', {
    extend: 'FormBase',
    Title: 'Formulario Consulta de Artículos',
    Proxy: 'Handlers/Mantenimiento/Listados/Articulos.ashx',
    storeListadoArticulos:
         Ext.create('Ext.data.Store', {
             storeId: 'storeListadoArticulos',
             autoLoad: true,
             model: 'Model.Articulos',
             remoteFilter: true,
             remoteSort: true,
             sorters: [{
                 property: 'descripcion',
                 direction: 'ASC'
             }],
             listeners: {
                 beforeload: function (str, opr, eOpts) {
                     var filter = [];
                     for (var itm in Ext.getCmp('pnlFiltros').getValues()) {
                         if (!Ext.isEmpty(Ext.getCmp('pnlFiltros').getValues()[itm])) {
                             var comparison;
                             switch (itm) {
                                 case 'unid_venta':
                                 case 'unid_empaque':
                                 case 'medida_empaque':
                                 case 'id_entidad':
                                 case 'id_rubro':
                                 case 'id_categ_art':
                                     comparison = 'eq';
                                     break;
                                 default:
                                     comparison = 'like';
                             }
                             filter.push({ field: itm, value: Ext.getCmp('pnlFiltros').getValues()[itm], comparison: comparison });
                         }
                     }
                     str.proxy.extraParams.filter = Ext.JSON.encode(filter);
                 }
             }
         }),
    storeProveedores: CreateFirstEmptyStore('storeProveedores', 'Model.Proveedores'),
    storeRubro: CreateFirstEmptyStore('storeRubro', 'Model.Rubro'),
    storeCategArt: CreateFirstEmptyStore('storeCategArt', 'Model.CategArticulos'),
    Items: [{
        xtype: 'panel',
        frame: true,
        layout: 'vbox',
        items: [{
            xtype: 'form',
            id: 'pnlFiltros',
            title: 'Filtros',
            layout: 'column',
            collapsible: true,
            frame: true,
            width: '100%',
            buttons: [{
                text: 'Buscar',
                handler: function () {
                    Ext.StoreMgr.lookup('storeListadoArticulos').reload();
                }
            }, {
                text: 'Exportar',
                iconCls: 'boton-Descargar',
                handler: function () {
                    var dict = CreateForeignStore('exportStore', Ext.getCmp('grdListadoArticulo').getStore().model);
                    dict.load({
                        start: 0,
                        limit: -1,
                        callback: function () {
                            var data = Ext.ux.exporter.Exporter.exportGridStore(Ext.getCmp('grdListadoArticulo'), dict);
                            activeInstance.DescargarExcel(data);
                        }
                    });
                }
            }],
            items: [{
                xtype: 'fieldset',
                columnWidth: 0.5,
                border: false,
                items: [{
                    xtype: 'textfield',
                    fieldLabel: 'Código',
                    name: 'codigo',
                    maxLength: 10,
                    enforceMaxLength: true
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Descripción',
                    name: 'descripcion',
                    maxLength: 50,
                    enforceMaxLength: true
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Unidad de Venta',
                    name: 'unid_venta',
                    maxLength: 10,
                    enforceMaxLength: true
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Unidad de Empaque',
                    name: 'unid_empaque',
                    maxLength: 10,
                    enforceMaxLength: true
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Medida de Empaque',
                    name: 'medida_empaque',
                    maxLength: 10,
                    enforceMaxLength: true
                }]
            }, {
                xtype: 'fieldset',
                columnWidth: 0.5,
                border: false,
                items: [{
                    xtype: 'textfield',
                    fieldLabel: 'Marca',
                    name: 'marca',
                    maxLength: 50,
                    enforceMaxLength: true
                }, {
                    xtype: 'combobox',
                    fieldLabel: 'Entidad Proveedor',
                    queryMode: 'local',
                    displayField: 'nombre',
                    valueField: 'id_entidad',
                    editable: true,
                    forceSelection: true,
                    store: Ext.StoreMgr.get('storeProveedores'),
                    name: 'id_entidad'
                }, {
                    xtype: 'combobox',
                    fieldLabel: 'Rubro',
                    queryMode: 'local',
                    displayField: 'descripcion',
                    valueField: 'id_rubro',
                    editable: true,
                    forceSelection: true,
                    store: Ext.StoreMgr.get('storeRubro'),
                    name: 'id_rubro'
                }, {
                    xtype: 'combobox',
                    fieldLabel: 'Categoría de Artículo',
                    queryMode: 'local',
                    displayField: 'descripcion',
                    valueField: 'id_categ_art',
                    editable: true,
                    forceSelection: true,
                    store: Ext.StoreMgr.get('storeCategArt'),
                    name: 'id_categ_art'
                }]
            }]
        }, {
            xtype: 'panel',
            title: 'Detalle',
            frame: true,
            width: '100%',
            layout: 'fit',
            flex: 1,
            items: [{
                id: 'grdListadoArticulo',
                xtype: 'grid',
                height: 150,
                store: Ext.StoreMgr.get('storeListadoArticulos'),
                bbar: [{
                    xtype: 'pagingtoolbar',
                    store: Ext.StoreMgr.get('storeListadoArticulos'),
                    dock: 'bottom',
                    displayInfo: true
                }],
                listeners: {
                    celldblclick: function () {
                        mostrarArticulo(arguments[3].data.id_articulo);
                    }
                },
                columns: [
                            { header: 'Identificador', dataIndex: 'id_articulo' },
                            { header: 'Código', dataIndex: 'codigo' },
                            { header: 'Descripción', dataIndex: 'descripcion', flex: 1 },
                            { header: 'Precio', dataIndex: 'precio', xtype: 'numbercolumn', format: '0.00' }
                        ]
            }]
        }]
    }]
});
